package com.marvels.approve.process.service;

import java.util.List;

import com.marvels.approve.manager.dto.OpinionDTO;
import com.marvels.approve.process.dto.CompleteProcessDTO;
import com.marvels.approve.process.dto.HandleProcessDTO;
import com.marvels.approve.process.dto.LoanApplyCaseDTO;
import com.marvels.approve.process.dto.QueryStatusNumDTO;
import com.marvels.common.exception.MarvelsBusinessException;

/**流程处理
 * @author 何杰
 * 2018年4月13日
 */
public interface IProcessService {
	/**查询处理单状态数量
	 * @author 何杰
	 * 2018年4月12日
	 * @return
	 */
	public QueryStatusNumDTO queryStatusNum(HandleProcessDTO handleProcessDTO)throws MarvelsBusinessException;
 
	/**取件，  取 权限，指定节点 的工单
	 * @author 何杰
	 * 2018年5月15日
	 * @param queryNodes  指定节点
	 * @return
	 * @throws MarvelsBusinessException
	 */
	public LoanApplyCaseDTO handleProcess(HandleProcessDTO handleProcessDTO)throws MarvelsBusinessException;
	
	/**取件,征信,审批，审计
	 * @author 何杰
	 * 2018年5月15日
	 * @param queryNodes  指定节点
	 * @return
	 * @throws MarvelsBusinessException
	 */
	public LoanApplyCaseDTO handleZSJProcess(HandleProcessDTO handleProcessDTO)throws MarvelsBusinessException;
	
	/**
	 * 主动针对某单进行取件
	 * @param handleProcessDTO
	 * @return
	 * @throws MarvelsBusinessException
	 */
	public void handleZSJProcessByLoanId(String loanId)throws MarvelsBusinessException;
	
	/**完成当前节点
	 * @author 何杰
	 * 2018年5月16日
	 * @param completeProcessDTO
	 * @return
	 * @throws MarvelsBusinessException
	 */
	public LoanApplyCaseDTO completeLoanApplyCase(CompleteProcessDTO completeProcessDTO)throws MarvelsBusinessException;

	/**查询退回app退回原因
	 * @author 娄凯琦
	 * @date 2018年9月27日  
	 * @param loanApplyCaseDTO
	 * @return
	 */
	public List<OpinionDTO> queryRefusedReason(LoanApplyCaseDTO loanApplyCaseDTO) throws MarvelsBusinessException;

	/**签合同
	 * @author 娄凯琦
	 * @date 2018年9月28日  
	 * @param loanId
	 * @throws MarvelsBusinessException
	 */
	public boolean loanCompactSign(String loanId) throws MarvelsBusinessException;
	
	
	
	
	/**
	 * 定时签合同
	 * @param loanId
	 * @return
	 * @throws MarvelsBusinessException
	 */
	public void timingLoanCompactSign();
}
